/*
 * SDL_ttf控制
 * 
 * 最后修改: 2006年12月1日星期五
 * 文曦畅
 *
 * 历史:
 */

#include <stdlib.h>
#include <SDL.h>
#include <SDL_ttf.h>
#include <string.h>

#include "base.h"

extern Uint32 fore_color;
static int ttf_inited = 0;

int ttf_init()
{
	if(TTF_Init()==-1) {
		printf("Error init ttf-system: %s\n", TTF_GetError());
		return -1;
	}
	atexit(TTF_Quit);
	ttf_inited = 1;
	return 0;
}

Font ttf_load(char *name, int size)
{
	Font font;
	char namebuf[1024];
	if (!ttf_inited) return NULL;
	namebuf[0] = 0;
	strcat(namebuf, respath_get());
	strcat(namebuf, name);
	
	if((font = TTF_OpenFont(namebuf, size)) == NULL) return NULL;
	return font;
}

void ttf_free(Font f)
{
	if (!ttf_inited) return;
	TTF_CloseFont(f);
}

Image ttf_make_img(Font font, char *utf8_str, Uint32 color)
{
	Image a;
	if (!ttf_inited) return NULL;
	SDL_Color c;
	c.r = (color & 0xff0000) >> 16;
	c.g = (color & 0xff00) >> 8;
	c.b = color & 0xff;
	if (utf8_str == NULL || utf8_str[0] == 0) utf8_str = " ";
	a = TTF_RenderUTF8_Blended(font, utf8_str, c);
	return a;
}

void ttf_set_bold(Font font)
{
	if (!ttf_inited) return;
	TTF_SetFontStyle(font, TTF_STYLE_BOLD | TTF_GetFontStyle(font));
}

void ttf_set_italic(Font font)
{
	if (!ttf_inited) return;
	TTF_SetFontStyle(font, TTF_STYLE_ITALIC | TTF_GetFontStyle(font));
}

void ttf_set_underline(Font font)
{
	if (!ttf_inited) return;
	TTF_SetFontStyle(font, TTF_STYLE_UNDERLINE | TTF_GetFontStyle(font));
}

void ttf_set_normal(Font font)
{
	if (!ttf_inited) return;
	TTF_SetFontStyle(font, TTF_STYLE_NORMAL);
}

